<?PHP

/*
 *   @descrición   clase de conexión  general al a base de datos
 *   @autor        Anderson Holguin Avila
 *   @version      1.0   
 */
include('include/bd/adodb5/adodb.inc.php');

class bd_mysql extends ADOConnection {

    var $dbdriver = 'mysql';
    var $servidor = 'localhost';
    var $usuario = 'root';
    var $contraseña = '';
    var $database = 'olimpiadas';
    var $db;

    function __construct() {
        $this->db = ADONewConnection($this->dbdriver); # eg 'mysql' o 'postgres'
//$this->db->debug = true;
        $this->db->Connect($this->servidor, $this->usuario, $this->contraseña, $this->database);
        $this->db->Execute("SET NAMES 'utf8'");
    }

//Función para obtener todos los datos de un menpu determinado
    function getUser($user) {
        $sql = "SELECT id,intentos_acceso,perfil_id,institucion_id FROM `usuario` WHERE nombre_acceso = '{$user}';";
        $respuesta = $this->db->Execute($sql)->GetArray();
        return $respuesta;
    }

    function setIntentos($user, $nIntento) {
        $sql = "UPDATE usuario set intentos_acceso=$nIntento WHERE nombre_acceso ='{$user}'";
        $respuesta = $this->db->Execute($sql);
    }

    function delIntentos($user) {
        $sql = "UPDATE usuario set intentos_acceso=0 WHERE nombre_acceso ='{$user}'";
        $respuesta = $this->db->Execute($sql);
    }

    function getAcceptance($user, $pass) {
        $sql = "SELECT COUNT(*) FROM acceso WHERE usuario_id = $user AND pass = '{$pass}' AND activo = 1 LIMIT 1;";
        $respuesta = $this->db->Execute($sql)->GetArray();
        return $respuesta[0][0];
    }

    function getModules($user) {
        $sql = "SELECT m.id,m.nombre,url 
                FROM usuario u
                INNER JOIN perfil p ON (u.perfil_id = p.id AND p.activo =1)
                INNER JOIN modulo_perfil mp ON (mp.perfil_id = p.id AND mp.activo = 1)
                INNER JOIN modulo m ON (m.id = mp.modulo_id AND m.activo =1)
                WHERE u.id = {$user};";
        $respuesta = $this->db->Execute($sql)->GetArray();
        return $respuesta;
    }

    function getDeportistas($institucionId, $where = '', $sortname = 'id', $sortorder = 'ASC', $limit = '') {
        $sql = "select * FROM deportista WHERE institucion_id = {$institucionId} AND activo =1 {$where} ORDER BY {$sortname} {$sortorder} {$limit};";
        $respuesta = $this->db->Execute($sql)->GetArray();
        return $respuesta;
    }

    function countDeportistas($institucionId, $where = '') {
        $sql = "select COUNT(1) FROM deportista WHERE institucion_id = {$institucionId} AND activo =1 {$where};";
        $respuesta = $this->db->Execute($sql)->GetArray();
        return $respuesta;
    }

    function getDeportistasReporte($sortname, $sortorder, $where = '', $limit = '') {
        $sql = "select d.*,i.nombre FROM deportista d
                INNER JOIN institucion i ON (i.id=d.institucion_id)
                WHERE d.activo =1 {$where} ORDER BY {$sortname} {$sortorder} {$limit}
                ;";
        $respuesta = $this->db->Execute($sql)->GetArray();
        return $respuesta;
    }

    function countDeportistasReporte($where = '') {
        $sql = "select COUNT(*) FROM deportista d  
        INNER JOIN institucion i ON (i.id=d.institucion_id)
        WHERE d.activo =1 {$where};";
        //die ($sql);
        $respuesta = $this->db->Execute($sql)->GetArray();
        return $respuesta;
    }

    function isDeportista($institucionId, $documento = '') {

        $sql = "select activo FROM deportista WHERE institucion_id = {$institucionId} AND documento='{$documento}';";
        $respuesta = $this->db->Execute($sql)->GetArray();
        if ($respuesta) {
            $estado = $respuesta[0]['activo'] == 1 ? 1 : 2;
        } else {
            $estado = 0;
        }
        //echo 'estado '.$estado; // estado 1:Ya existe , estado 2: ya existe pero esta eliminado
        return $estado;
    }

    function getTiposDocumentos() {
        $sql = "SELECT * FROM tipo_documento WHERE activo = 1;";
        $respuesta = $this->db->Execute($sql)->GetArray();
        return $respuesta;
    }

    function getEps() {
        $sql = "SELECT * FROM eps WHERE activo = 1;";
        $respuesta = $this->db->Execute($sql)->GetArray();
        return $respuesta;
    }

    function getAntecedentes() {
        $sql = "SELECT * FROM antecedentes_medicos WHERE activo = 1;";
        $respuesta = $this->db->Execute($sql)->GetArray();
        return $respuesta;
    }

    //obtener deportes inscritos
    function getDeportes() {
        $sql = "SELECT  * FROM deportes WHERE activo = 1;";
        $respuesta = $this->db->Execute($sql)->GetArray();
        return $respuesta;
    }

    function insertDeportista($documento, $tipo_documento_id, $primer_nombre, $segundo_nombre, $primer_apellido, $segundo_apellido, $fecha_nacimiento, $genero, $eps_id, $objecion_tratamiento_medico, $peso, $talla, $tension_arterial, $frecuencia_cardiaca, $rh, $restriccion_general, $certifica_participacion, $observaciones, $institucion_id) {
        /* $primer_nombre = utf8_decode($primer_nombre);
          $segundo_nombre = utf8_decode($segundo_nombre);
          $primer_apellido = utf8_decode($primer_apellido);
          $segundo_apellido = utf8_decode($segundo_apellido);
          $objecion_tratamiento_medico = utf8_decode($objecion_tratamiento_medico);
          $restriccion_general = utf8_decode($restriccion_general);
          $observaciones = utf8_decode($observaciones); */
        $this->db->Execute("SET NAMES 'utf8'");
        $sql = "
                INSERT INTO deportista 
                (documento,tipo_documento_id,primer_nombre,segundo_nombre,primer_apellido,segundo_apellido,fecha_nacimiento,genero,eps_id,objecion_tratamiento_medico,peso,talla,tension_arterial,frecuencia_cardiaca,rh,restriccion_general,certifica_participacion,observaciones,institucion_id,activo)
                VALUES
                ('$documento',$tipo_documento_id,'{$primer_nombre}','$segundo_nombre','$primer_apellido','$segundo_apellido','$fecha_nacimiento','$genero',$eps_id,'$objecion_tratamiento_medico',$peso,'$talla','$tension_arterial','$frecuencia_cardiaca','$rh','$restriccion_general',$certifica_participacion,'$observaciones',$institucion_id,1)
                ";
        //echo $sql;
        $respuesta = $this->db->Execute($sql);
        $id = NULL;
        if ($respuesta) {
            $id = $this->db->insert_id();
        }
        return $id;
    }

    function editDeportista($id, $documento, $tipo_documento_id, $primer_nombre, $segundo_nombre, $primer_apellido, $segundo_apellido, $fecha_nacimiento, $genero, $eps_id, $objecion_tratamiento_medico, $peso, $talla, $tension_arterial, $frecuencia_cardiaca, $rh, $restriccion_general, $certifica_participacion, $observaciones, $institucion_id) {

        $this->db->Execute("SET NAMES 'utf8'");
        $sql = "UPDATE deportista SET
                documento='$documento',
                tipo_documento_id=$tipo_documento_id,
                primer_nombre='{$primer_nombre}',
                segundo_nombre='$segundo_nombre',
                primer_apellido='$primer_apellido',
                segundo_apellido='$segundo_apellido',
                fecha_nacimiento='$fecha_nacimiento',
                genero ='$genero',
                eps_id=$eps_id,
                objecion_tratamiento_medico= '$objecion_tratamiento_medico',
                peso = $peso,
                talla ='$talla',
                tension_arterial ='$tension_arterial',
                frecuencia_cardiaca = '$frecuencia_cardiaca',
                rh ='$rh',
                restriccion_general ='$restriccion_general',
                certifica_participacion = $certifica_participacion,
                observaciones ='$observaciones',
                institucion_id = $institucion_id
                WHERE id= $id
                ";
        //echo $sql;
        $respuesta = $this->db->Execute($sql);

        if ($respuesta) {
            return $id;
        }
    }

    //Fucntion para insertar los acudientes del los deportistas
    function insertAcudiente($documento, $nombre_completo, $telefono, $celular, $email, $direccion, $deportista_id, $tipo_acudiente_id, $n_registro) {
        $this->db->Execute("SET NAMES 'utf8'");
        $sql = "INSERT INTO acudiente(documento,nombre_completo,telefono,celular,email,direccion,deportista_id,tipo_acudiente_id,n_registro,activo) 
                VALUES ('$documento', '$nombre_completo', '$telefono', '$celular', '$email', '$direccion', $deportista_id, $tipo_acudiente_id, '$n_registro', 1);";
        $respuesta = $this->db->Execute($sql);
        return $respuesta;
    }

    //Fucntion para editar los acudientes del los deportistas
    function editAcudiente($documento, $nombre_completo, $telefono, $celular, $email, $direccion, $deportista_id, $tipo_acudiente_id, $n_registro) {
        $this->db->Execute("SET NAMES 'utf8'");
        $sql = "UPDATE acudiente SET
        documento='$documento',
        nombre_completo='$nombre_completo',
        telefono ='$telefono',
        celular ='$celular',
        email ='$email',
        direccion ='$direccion',
        n_registro ='$n_registro'
        WHERE deportista_id=$deportista_id AND tipo_acudiente_id = $tipo_acudiente_id";
        $respuesta = $this->db->Execute($sql);
        return $respuesta;
    }

    //Function para insertar el antecedente médico del alumno 
    function insertAntecedenteMedica($deportista_id, $antecedentes_medicos_id, $valor) {
        $sql = "INSERT INTO deportista_antecesentes (deportista_id,antecedentes_medicos_id,valor)
                VALUES ($deportista_id, $antecedentes_medicos_id, '$valor');";
        $respuesta = $this->db->Execute($sql);
        return $respuesta;
    }

    //Function para insertar el antecedente médico del alumno 
    function deleteAntecedenteMedica($deportista_id) {
        $sql = "DELETE FROM  deportista_antecesentes WHERE deportista_id= {$deportista_id};";
        $respuesta = $this->db->Execute($sql);
        return $respuesta;
    }

    //Function para insertar el antecedente médico del alumno 
    function insertDeportistaDeporte($deportes_id, $deportista_id) {
        $sql = "insert into `deportista_deporte` ( `deportes_id`, `deportista_id`) values ( {$deportes_id}, {$deportista_id})";
        $respuesta = $this->db->Execute($sql);
        return $respuesta;
    }

    //Function para insertar el antecedente médico del alumno 
    function delDeportistaDeporte($deportes_id, $deportista_id) {
        $sql = "DELETE FROM deportista_deporte WHERE deportes_id = {$deportes_id} AND deportista_id = {$deportista_id};";
        $respuesta = $this->db->Execute($sql);
        return $respuesta;
    }

    //Function para insertar el antecedente médico del alumno
    function delDeportista($deportista_id, $eliminar = 1) {
        if ($eliminar == 1) {
            $sql = "UPDATE deportista set activo=0 WHERE id ={$deportista_id}";
        } else if ($eliminar == 0) {
            $sql = "UPDATE deportista set activo=1 WHERE id ={$deportista_id}";
        }

        //echo $sql;
        $respuesta = $this->db->Execute($sql);
        return $respuesta;
    }

    //obtener deportes inscritos
    function getDeportistasDeporte($institucionId, $deporteId) {
        $sql = "SELECT dd.deportista_id,
                dd.deportes_id,dd.puntaje,d.documento, d.primer_nombre, d.segundo_nombre,d.primer_apellido,d.segundo_apellido, d.institucion_id,d.fecha_nacimiento
                FROM `deportista_deporte` dd
                INNER JOIN deportista d ON (dd.deportista_id = d.id AND d.activo=1)
                WHERE dd.deportes_id ={$deporteId} ";
        if ($institucionId > 0)
            $sql .= "AND d.institucion_id ={$institucionId}";
        $respuesta = $this->db->Execute($sql)->GetArray();
        return $respuesta;
    }

    //obtener deportes inscritos
    function getDeportistasEliminados($institucionId) {
        $sql = "SELECT * FROM deportista WHERE activo = 0 AND institucion_id = {$institucionId};";
        $respuesta = $this->db->Execute($sql)->GetArray();
        return $respuesta;
    }

    function getInstitucion($institucionId) {
        $sql = "SELECT * FROM institucion WHERE activo = 1 AND id = {$institucionId};";
        $respuesta = $this->db->Execute($sql)->GetArray();
        return $respuesta;
    }

    function getInstituciones() {
        $sql = "SELECT * FROM institucion WHERE activo = 1";
        $respuesta = $this->db->Execute($sql)->GetArray();
        return $respuesta;
    }

    function getDatosDeportista($deportistaId) {
        $sql = "SELECT d.*,i.nombre as nombre_institucion, td.nombre as tipo_documento, e.nombre AS eps FROM deportista d  
                INNER  JOIN institucion i ON (d.institucion_id =i.id)
                INNER JOIN tipo_documento td ON (d.tipo_documento_id= td.id)
                INNER JOIN eps e on (d.eps_id = e.id)
                WHERE d.id = {$deportistaId};";
        $datosPersonales = $this->db->Execute($sql)->GetArray();

        $sql = "SELECT * FROM acudiente WHERE deportista_id = {$deportistaId} AND tipo_acudiente_id = 1;";
        $datosAcudiente = $this->db->Execute($sql)->GetArray();

        $sql = "SELECT * FROM acudiente WHERE deportista_id = {$deportistaId} AND tipo_acudiente_id = 2;";
        $datosEntrenador = $this->db->Execute($sql)->GetArray();

        $sql = "SELECT * FROM acudiente WHERE deportista_id = {$deportistaId} AND tipo_acudiente_id = 3;";
        $datosMedico = $this->db->Execute($sql)->GetArray();

        $sql = "SELECT da.*,am.nombre as  antecedentes_medicos FROM deportista_antecesentes da
                INNER JOIN antecedentes_medicos am ON (da.antecedentes_medicos_id= am.id)
                WHERE da.deportista_id  = {$deportistaId};";
        $datosAntecedentes = $this->db->Execute($sql)->GetArray();

        $respuesta = array(
            'datosPersonales' => $datosPersonales,
            'datosAcudiente' => $datosAcudiente,
            'datosEntrenador' => $datosEntrenador,
            'datosMedico' => $datosMedico,
            'datosAntecedentes' => $datosAntecedentes
        );



        return $respuesta;
    }

    function getAcudiente($deportistaId, $tipoAcudiente) {
        $sql = "SELECT * FROM acudiente WHERE deportista_id = {$deportistaId} AND tipo_acudiente_id = {$tipoAcudiente};";
        $datosAcudiente = $this->db->Execute($sql)->GetArray();
        return $datosAcudiente;
    }
}

?>